package com.adk.backend.service;

import com.adk.backend.entity.LxOrderTracking;

import java.util.List;
import java.util.Map;

/**
 * 订单跟踪服务接口
 */
public interface OrderTrackingService {
    
    /**
     * 根据订单ID查询跟踪记录列表
     */
    List<Map<String, Object>> getTrackingListByOrderId(Long orderId);
    
    /**
     * 根据ID查询跟踪记录
     */
    LxOrderTracking getTrackingById(Long id);
    
    /**
     * 创建跟踪记录
     * 如果已存在相同orderId和statusCode的记录，则更新；否则插入新记录
     */
    LxOrderTracking createTracking(LxOrderTracking tracking);
    
    /**
     * 创建跟踪记录（支持强制添加）
     * @param tracking 跟踪记录
     * @param forceAdd 是否强制添加：true-强制添加新记录并将其他相同状态的记录is_show设为0，false-如果存在则更新
     * @return 跟踪记录
     */
    LxOrderTracking createTracking(LxOrderTracking tracking, boolean forceAdd);
    
    /**
     * 根据订单ID和状态代码查询跟踪记录
     */
    LxOrderTracking getTrackingByOrderIdAndStatusCode(Long orderId, Integer statusCode);
    
    /**
     * 更新跟踪记录
     */
    boolean updateTracking(LxOrderTracking tracking);
    
    /**
     * 删除跟踪记录
     */
    boolean deleteTracking(Long id);
    
    /**
     * 批量创建跟踪记录
     */
    boolean batchCreateTracking(List<LxOrderTracking> trackingList);
}

